package com.ych.modules.common.service.impl;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.ych.modules.base.dbEntity.TSysDictEntity;
import com.ych.modules.base.service.ITSysDictService;
import com.ych.modules.common.service.DictService;
import com.ych.utils.beanToMap.BeanMapUtil;
import com.ych.utils.mysqlPageUtil.Query;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Author: Usopp.tsui
 * Date: 2021/1/5
 * Time: 10:35
 * Description:
 */
@Service("DictService")
public class DictServiceImpl implements DictService {
    @Autowired
    private ITSysDictService itSysDictService;

    /**
     * 查询码值列表
     *
     * @param type
     * @return
     */
    @Override
    public List<TSysDictEntity> listDictByType(String type) {
        Wrapper<TSysDictEntity> wrapper = new EntityWrapper<TSysDictEntity>()
                .where("1=1")
                .eq("type", type);
        List<TSysDictEntity> list = itSysDictService.selectList(wrapper);
        return list;
    }

    @Override
    public void saveDict(TSysDictEntity tSysDictEntity) {
        itSysDictService.insert(tSysDictEntity);
    }

    @Override
    public Page<TSysDictEntity> selectDict(TSysDictEntity tSysDictEntity) {
        if (null == tSysDictEntity) {
            throw new RuntimeException("对象为空");
        }
        Wrapper<TSysDictEntity> wrapper = new EntityWrapper<TSysDictEntity>()
                .where("1=1")
                .ne("status", "9")
                .eq(StringUtils.isNotBlank(tSysDictEntity.getType()), "type", tSysDictEntity.getType())
                .eq(StringUtils.isNotBlank(tSysDictEntity.getValue()), "value", tSysDictEntity.getValue())
                .orderBy("type")
                .orderBy("level asc");
        Page<TSysDictEntity> page = itSysDictService.selectPage(new Query<TSysDictEntity>(BeanMapUtil.toPageQuery(tSysDictEntity)).getPage(), wrapper);
        return page;
    }

    @Override
    public void updateDict(TSysDictEntity tSysDictEntity) {
        if (null == tSysDictEntity) {
            throw new RuntimeException("对象为空");
        }
        TSysDictEntity updateEntity = itSysDictService.selectById(tSysDictEntity.getDictId());
        String label = tSysDictEntity.getLabel();
        String status = tSysDictEntity.getStatus();
        if (StringUtils.isNotBlank(label)) {
            updateEntity.setLabel(tSysDictEntity.getLabel());
        }
        if (StringUtils.isNotBlank(status)) {
            updateEntity.setStatus(tSysDictEntity.getStatus());
        }
        itSysDictService.updateById(updateEntity);
    }

    @Override
    public void removeDict(String dictId) {
        TSysDictEntity dictEntity = itSysDictService.selectById(dictId);
        if (null == dictEntity){
            throw new RuntimeException("码值不存在");
        }
        dictEntity.setStatus("9");//删除
        itSysDictService.updateById(dictEntity);
    }
}
